#include <iostream>
#include <vector>
#include <cstdio>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
std::vector<int> date;
enum{
  OK=0,
  OPEN_FILE_ERROR,
};
const std::string gsep = " ";
int saveBegin()
{
  std::string name = std::to_string(time(nullptr));
  name+=".backup";
  FILE * fp = fopen(name.c_str(),"w");
  if(fp==nullptr) return OPEN_FILE_ERROR;
  std::string dataStr;
  for(auto d : date)
  {
    dataStr+=std::to_string(d);
    dataStr+=gsep;
  }
  fputs(dataStr.c_str(),fp);
  fclose(fp);
  return OK;
}
void Save()
{
  pid_t id = fork();
  if(id==0)
  {
    int code = saveBegin();
    exit(code);
  }
  int status = 0;
  pid_t rid = waitpid(id,&status,0);
  if(rid>0)
  {
    int code = WEXITSTATUS(status);
    if(code ==0) printf("备份成功, exit code : %d\n",code);
    else printf("备份失败 exit code :%d\n",code);
  }
  else{
    perror("waitpid");
  }
}
int main()
{
  int cnt = 0;
  while(1)
  {
    date.push_back(cnt);
    if(cnt%10==0)
    {
      Save();
    }
  }
}
